package AlgoritmosGeneticos.model.impl.selecciones;

import java.util.LinkedList;
import java.util.List;

import utils.CustomRandom;

import AlgoritmosGeneticos.model.EstrategiaDeSeleccion;
import AlgoritmosGeneticos.model.Individuo;
import AlgoritmosGeneticos.model.PoblacionSeleccionada;
import AlgoritmosGeneticos.model.impl.PoblacionImpl;
import AlgoritmosGeneticos.model.impl.PoblacionSeleccionadaImpl;

public class Torneos implements EstrategiaDeSeleccion{

	public Torneos(){
		super();
		System.out.println("Torneos");
	}
	
	@Override
	public PoblacionSeleccionada seleccionar(List<Individuo> pob, int k) {
		
		int t = 10;
		
		int pobSize = pob.size();
		List<Individuo> respuesta = new LinkedList<Individuo>();
		for( int i = 0; i < k; i++){
			Individuo ind = pob.get(CustomRandom.getRandomInt(pobSize));
			for( int j = 1; j < t; j++){
				Individuo aux = pob.get(CustomRandom.getRandomInt(pobSize));
				if( PoblacionImpl.aptitud(aux) > PoblacionImpl.aptitud(ind)){
					ind = aux;
				}
			}
			respuesta.add(ind);
		}
		return new PoblacionSeleccionadaImpl(respuesta);
	}
}
